/*
 * DaoFactory.java
 *
 * Created on 22 de Agosto de 2007, 23:54
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.sgpa.persistencia;

import br.com.sgpa.dominio.Alerta;
import br.com.sgpa.dominio.Colaborador;
import br.com.sgpa.dominio.ComponenteEquipeTecnica;
import br.com.sgpa.dominio.Papel;
import br.com.sgpa.dominio.Projeto;
import br.com.sgpa.dominio.Tarefa;
import br.com.sgpa.utilidade.JpaUtil;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

/**
 *
 * @author Leandro
 */
public class DaoFactory {
    
    
    private EntityManager gerenteDeEntidade;
    private EntityTransaction transacao;
    
    /** Creates a new instance of DaoFactory */
    public DaoFactory() {
        gerenteDeEntidade = JpaUtil.getGerenteDeEntidades();
    }
    
    public void beginTransaction()
    {
        transacao = gerenteDeEntidade.getTransaction();
        transacao.begin();
    }
    
    public void commit()
    {
        transacao.commit();
    }
    
    public boolean hasTransacao()
    {
        return transacao != null ;
    }
    
    public void rollBack()
    {
        transacao.rollback();
        transacao = null;
    }
    
    public void close()
    {
        gerenteDeEntidade.close();
    }
    
    
    public ColaboradorDao criarDaoColaborador()
    {
        return new ColaboradorDao(gerenteDeEntidade,Colaborador.class);
    }
    
    public PapelDao criarDaoPapel()
    {
        return new PapelDao (gerenteDeEntidade,Papel.class);
    }
    
    public ProjetoDao criarDaoProjeto()
    {
        return new ProjetoDao(gerenteDeEntidade,Projeto.class);
    }

    public AlertaDao criarAlertaDao() {
        return new AlertaDao(gerenteDeEntidade,Alerta.class);
    }

    public ComponenteEquipeTecnicaDao criarEteDao() {
        return new ComponenteEquipeTecnicaDao(gerenteDeEntidade,ComponenteEquipeTecnica.class);
    }
    
    public TarefaDao criarTarefaDao(){
            return new TarefaDao(gerenteDeEntidade,Tarefa.class);
    }
    
}
